/**
 * 
 */
package com.furb.pub.persistencia;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

import com.furb.pub.controle.sistema.Setor;

/**
 * @author Fernando
 * 
 */
public class AdapterSetorDao extends SetorDao {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    public Setor findSetorSemMesa(String... params) {

        if (params.length != 1) {
            throw new RuntimeException("Err: Deve ser informado apenas o nome do setor para pesquisa.");
        }

        String nomeSetor = params[0];

        File pasta = new File(PASTA_SETORES);

        try {
            String[] arquivos = pasta.list();

            for (String arquivo : arquivos) {
                if (!FacadeDao.ehArquivoSistema(arquivo)) {
                    continue;
                }

                Setor setor = getSetorArquivo(arquivo);

                if (setor != null && setor.getNome().equalsIgnoreCase(nomeSetor)) {
                    return setor;
                }

            }
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        return null;
    }

    /**
     * @param setores
     * @param arquivo
     * @throws FileNotFoundException
     * @throws IOException
     */
    public Setor getSetorArquivo(String arquivo) throws FileNotFoundException, IOException {
        BufferedReader buffer = new BufferedReader(new FileReader(PASTA_SETORES.concat(arquivo)));

        try {
            String dadosArquivo = buffer.readLine();

            if (dadosArquivo != null) {

                String[] dadosSetor = dadosArquivo.split("#");

                Setor setor = new Setor(dadosSetor[0]);
                setor.setDescricao(dadosSetor[1]);

                //                AdapterMesaDao mesaDao = new AdapterMesaDao();

                //                setor.getMesas().addAll(mesaDao.findMesasForSetor(setor.getNome()));
                return setor;
            }
        } finally {
            buffer.close();
        }
        return null;
    }

}
